package org.jeecg.modules.analysis.trend.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @Description: 趋势查询结果视图对象
 * @Author: jeecg-boot
 * @Date: 2025-11-04
 * @Version: V1.0
 */
@Data
@Schema(description = "趋势查询结果视图对象")
public class TrendQueryResultVO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /** 趋势数据列表 */
    @Schema(description = "趋势数据列表")
    private List<TechnologyTrendVO> trendDataList;
    
    /** 查询参数 */
    @Schema(description = "查询参数")
    private QueryParamsVO queryParams;
    
    /** 统计信息 */
    @Schema(description = "统计信息")
    private StatisticsVO statistics;
    
    /**
     * 查询参数视图对象
     */
    @Data
    @Schema(description = "查询参数视图对象")
    public static class QueryParamsVO implements Serializable {
        
        private static final long serialVersionUID = 1L;
        
        /** 技术分类ID列表 */
        @Schema(description = "技术分类ID列表")
        private List<String> technologyIds;
        
        /** 开始年份 */
        @Schema(description = "开始年份")
        private Integer startYear;
        
        /** 结束年份 */
        @Schema(description = "结束年份")
        private Integer endYear;
    }
    
    /**
     * 统计信息视图对象
     */
    @Data
    @Schema(description = "统计信息视图对象")
    public static class StatisticsVO implements Serializable {
        
        private static final long serialVersionUID = 1L;
        
        /** 总专利数量 */
        @Schema(description = "总专利数量")
        private Integer totalPatentCount;
        
        /** 技术分类数量 */
        @Schema(description = "技术分类数量")
        private Integer technologyCount;
        
        /** 年份跨度 */
        @Schema(description = "年份跨度")
        private Integer yearSpan;
        
        /** 最大年度申请量 */
        @Schema(description = "最大年度申请量")
        private Integer maxYearlyCount;
        
        /** 平均年度申请量 */
        @Schema(description = "平均年度申请量")
        private Double avgYearlyCount;
    }
}
